【Andrew Ng 深度学习视频笔记】-lec1.4

本文记录第一课第四周视频中的概念,包括了一些公式推导过程以及课后作业的一些记录。

logo

1. 前后向传播的公式

1.1 各变量的shape

n_x表示输入层大小,n_h表示隐含层大小,n_y表示输出层大小

1
2
3
4
5
6
7
8
9
10
变量shape
X = (n_h,m)
W[1] = (n_h,n_x)
b[1] = (n_h,1)
Z[1] = (n_h,m)
a[1] = (n_h,m)
W[2] = (n_y,n_h)
b[2] = (n_y,1)
Z[2] = (n_y,m)
a[2] = (n_y,m)

1.2 前向传播公式

$Z^{[1]} = W^{[1]}X+b^{[1]} \tag{1}$
$a^{[1]} = tanh(Z^{[1]}) \tag{2}$
$Z^{[2]} = W^{[2]}a^{[1]}+b^{[2]} \tag{3}$
$a^{[2]} = sigmoid(Z^{[2]}) \tag{4}$

1.3 反向传播公式

$ da^{[2]} = \large \frac{\partial J}{\partial {a^{[2]}}} = \frac{a^{\small[2]\small}-y}{a^{[2]}(1-a^{[2]})} \tag{6}$
$dZ^{[2]} = \large \frac{\partial J}{\partial {Z^{[2]}}} = \frac{\partial J}{\partial {a^{[2]}}}\frac{\partial {a^{[2]}}}{\partial {Z^{[2]}}} = \small {a^{[2]}-y} \tag{7}$
$dW^{[2]} = \large \frac{\partial J}{\partial {W^{[2]}}} = \frac{\partial J}{\partial {Z^{[2]}}}\frac{\partial {Z^{[2]}}}{\partial {W^{[2]}}} = \small dZ^{[2]}a^{[1]} \tag{8}$
$db^{[2]} = \large \frac{\partial J}{\partial {b^{[2]}}} = \frac{\partial J}{\partial {Z^{[2]}}}\frac{\partial {Z^{[2]}}}{\partial {b^{[2]}}} = \small dZ^{[2]}\tag{9}$
$da^{[1]} = \large \frac{\partial J}{\partial {a^{[1]}}} = \frac{\partial J}{\partial {Z^{[2]}}}\frac{\partial {Z^{[2]}}}{\partial {a^{[1]}}} = \small dZ^{[2]}W^{[2]}\tag{10}$
$dZ^{[1]} = \large \frac{\partial J}{\partial {Z^{[1]}}} = \frac{\partial J}{\partial {a^{[1]}}}\frac{\partial {a^{[1]}}}{\partial {Z^{[1]}}} = \small da^{[1]}(1-(a^{[1]})^{2})\tag{11}$
$dW^{[1]} = \large \frac{\partial J}{\partial {W^{[1]}}} = \frac{\partial J}{\partial {Z^{[1]}}}\frac{\partial {Z^{[1]}}}{\partial {W^{[1]}}} = \small dZ^{[1]}X\tag{12}$
$db^{[1]} = \large \frac{\partial J}{\partial {b^{[1]}}} = \frac{\partial J}{\partial {Z^{[1]}}}\frac{\partial {Z^{[1]}}}{\partial {b^{[1]}}} = \small dZ^{[1]}\tag{13}$

推导过程中,使用到了常用求导公式:
$y=sigmoid(x)’ = \frac{1}{1+e^{-x}}’= y(1-y)$
$y=tanh(x)’ = {\frac{e^{x}-e^{-x}}{e^{x}+e^{-x}}}’= (1-y^{2})$

2. 一些约定和技巧

2.1 矩阵的表示

1
2
3
4
5
6
7
变量加[]表示层数 ,()表示样本数
神经网络计算层数的时候一般不计算输入层
下标表示此层的第几个神经元
神经网络中矩阵维度的表示原则:
同一层的神经元数量为矩阵行数量
w列数量一般为前一层的神经元数
其他列数量一般为样本数m

2.2 激活函数

sigmoid: $a = \frac{1}{1+e^{-z}}$
tanh:$a = \frac{e^z-e^{-z}}{e^z+e^{-z}}$
relu:$a = max(0,z)$

为什么需要使用非线性的激活函数
如果不使用非线性的激活函数,那么神经网络构造出的永远都是输入的线性函数
因为两个线性函数的线性组合 还是线性函数